package com.hspedu.annotation_;

/**
 * @author sp
 * @version 0.1
 */
public class Override_ {
    public static void main(String[] args) {

    }
}

class Father{
    public void fly(){
        System.out.println("Father fly...");
    }
}
class Son extends Father{
    @Override
    public void fly() {
        System.out.println("Son fly...");
    }

    //1.@Override表示重写，标记了这个的方法，编译器会检查是否重写
//    @Override
//    public void say(){
//
//    }

    /*
      Override类的定义如下
        @Target(ElementType.METHOD)
        @Retention(RetentionPolicy.SOURCE)
        public @interface Override {
        }

      2.@Interface表示一个注解类
      3.@Override只能修饰方法，不能修饰其他类，包，属性等等，因为其源码上标记了
        @target(ElementType.METHOD), 说明只能修饰方法。
      4.@Target是修饰注解的注解，成为元注解
     */
}

//1.@Deprecated表示某个程序元素（类，方法等）已经过时了
//2.可以修饰方法，类，字段，包，参数 等等
/*
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
    public @interface Deprecated {
    }
 */
@Deprecated
class A{
    public int n1 = 10;
    public void hi(){

    }
}